package de.fhtrier.gdw2.ships.game.entities;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.state.StateBasedGame;

import de.fhtrier.gdw2.ships.game.World;
import de.fhtrier.gdw2.ships.utils.AssetLoader;

/**
 * Eine Klasse um auf eine Position oder ein Entity zu zeigen.
 * 
 * @author Wendelin
 * 
 */
public class Target extends Entity
	{
		/** Entity auf die gezeigt wird */
		private Entity targetEntity;
		/** True falls auf ein entity gezeigt wird */
		public boolean changingPos;
		/** Bild um Targets in der World anzuzeigen(soll opt sein) */
		public static final Image flag = AssetLoader.getInstance().getImage(
				"target_flag");

		// Konstruktoren
		public Target(int direction, double d, double e)
			{
				super(direction, d, e, flag);
			}
//Target auf Position
		public Target(double d, double e)
			{
				this(0, d, e);
				this.targetEntity = null;
				this.changingPos = false;
			}
//Target auf Entity
		public Target(Entity e)
			{
				this(0, e.getX(), e.getY());
				this.targetEntity = e;
				changingPos = true;
			}

		@Override
		public void render(GameContainer container, StateBasedGame game,
				Graphics g)
			{
				getPic().draw((float)getX(), (float)getY());

			}

		@Override
		public void update(World w, GameContainer container, int delta)
			{
				if (this.changingPos)
					{
						this.setX(this.targetEntity.getX());
						this.setY(this.targetEntity.getY());
					}

			}

		@Override
		public Entity duplicate()
			{
				// Targets werden nicht dupliziert // winziger Fehler im Programmaufbau ^^
				return null;
			}

	}
